Development of application programs can involve a development stage and then a debugging stage, during which problems with the application program may be detected and/or solved. Specialized debugging tools can simplify and speed up the debugging stage of an application program. Such debugging tools can allow a user to see or even change the value of variables at certain stages of program execution so that a developer can find potential problems in the application program and attempt to solve these problems.
During the operation of the debugging tool, the application program is executed in an environment that operates identically or nearly identically to at least one environment in which the application program is expected to be operated. Identical or nearly identical operation can be important to the debugging process, because if an application runs differently on the debugger than it does in the environments in which it is expected to operate, problems with can occur in such expected environments either might not appear when the application is run by the debugger or can exhibit different behaviors in the debugger than they do in the normal operating environment of the application program, making problems reported by users of the application program more difficult to track and solve. Still other problems might appear when the application is run on the debugger may not appear in any expected operating environment, causing the developer to waste time solving problems that may never appear. This can cause the developer to lose confidence in the debugger.
When the runtime environment is the same environment in which the debugging tool operates, the debugging tool can be used to accurately operate the application program and perform certain debugging functions such as showing the value of variables, allowing the user to change the value of variables and other similar functions.
However, if the debugging tool does not operate in one or more of the environments in which an application program is expected to operate, the debugging tool can not execute the application program in its native environment, causing the difficulties described above. An example of a debugging tool that does not operate in the native environment of the application program is the conventional Flash 5 authoring tool commercially available from Macromedia, Inc., of San Francisco, Calif. Flash 5 operates in a Microsoft Windows or Apple Macintosh environment and contains a debugging tool. Flash 5 is used to develop applications for the Flash 5 player, which operates as a plug-in to a browser, such as the conventional Microsoft Internet Explorer commercially available from Microsoft Corporation of Redmond, Wash. or the Navigator program commercially available from the Netscape Corporation of Mountain View Calif. and owned by America Online of Dulles, Va. Because Flash 5 applications are executed in an environment of the browser, but the Flash 5 debugging tool operates natively under the operating system, the problems described above can result if the Flash 5 debugging tool is used to debug a Flash 5 application.
One potential solution to this problem is for the user to program the functionality of the debugger into the application program. This potential solution is suboptimal because, although the user can program some of this functionality into the application program, such programming takes time that the programmer could use to solve problems with the application program.
One potential solution to the problems that arise if the debugging tool operates in an environment that is different from the environment expected by the application program would be for the debugging tool to simulate the environment in which the application program is expected to operate. However, a simulation of this type can involve anticipating how an inordinately large number of circumstances would be anticipated by the expected operating environment of the application, a task that would be prone to inaccuracies even if it could be attempted. If there is more than one environment in which the application program being developed operates, the debugging tool would have to be able to simulate all of the environments, compounding the difficulties of simulation. Furthermore, if the environments are evolving, the debugging tool must be constantly updated to accurately simulate the ever evolving environments. These factors can make the simulation of multiple evolving environments a seemingly insurmountable task.
What is needed is a system and method that can allow a debugging tool to accurately assist with debugging an application program even if the application program operates in one or more environments that are different from the environment in which the debugging tool operates.